//readonly 修饰符  首先是一个关键字 对内中的属性成员进行修饰   修饰后 该属性成员 就不能在外部被随意修改了
(()=>{
    //readonly修饰类中的成员属性操作得出的结论
    /* class Person {
        //如果构造函数中没有任何参数  类中的属性成员已经使用了readonly 那么外部也不能对这个属性进行更改的
        // readonly name:string='大甜甜'
        readonly name:string
        //构造函数中可以对只读的成员进行修改
        constructor(name:string='大甜甜') {
            // this.name='哈哈'
            this.name=name
        }
        sayHi(){
            console.log('瓯海哟',this.name);
            //类中的普通方法中也是不能修改
            // this.name='da'
        }
    }
    const person = new Person('小甜甜')
    console.log(person);
    console.log(person.name);
    // person.name='不甜了'
    // console.log(person.name); */
    

    //readonly 修饰类中的构造函数得出的结果
    class Person {
        //构造函数中的name参数 一旦使用readyonly进行修饰后 可以叫做参数属性
        constructor(protected name:string='大甜甜') {
            // this.name=name
        }
       
    }
    class Cat extends Person {
        constructor(name:string) {
            super(name)
        }
    }
    const person = new Person('小甜甜')
    console.log(person);
    const cat = new Cat('猫猫')
    console.log(cat);
    
    // person.name='public更改小甜甜'
    // console.log(person.name);
   
    
})()